import os
import subprocess
import psutil  # 需要安装：pip install psutil
import time

def open_application(app_path):
    """
    打开指定路径的应用程序
    
    参数:
        app_path: 应用程序可执行文件的完整路径
    """
    try:
        # 检查文件是否存在
        if not os.path.exists(app_path):
            raise FileNotFoundError(f"应用程序路径不存在: {app_path}")
            
        # 启动应用程序
        print(f"正在打开: {app_path}")
        subprocess.Popen(app_path)
        return True
    except Exception as e:
        print(f"打开应用程序失败: {str(e)}")
        return False

def close_application(process_name):
    """
    关闭指定名称的应用程序
    
    参数:
        process_name: 进程名称（可执行文件名，如"notepad.exe"）
    """
    try:
        # 遍历所有进程
        closed = False
        for proc in psutil.process_iter(['name', 'pid']):
            if proc.info['name'].lower() == process_name.lower():
                print(f"正在关闭进程: {proc.info['name']} (PID: {proc.info['pid']})")
                # 尝试优雅关闭
                proc.terminate()
                # 等待关闭
                time.sleep(3)
                # 如果仍在运行，强制关闭
                if proc.is_running():
                    proc.kill()
                closed = True
        
        if not closed:
            print(f"未找到进程: {process_name}")
        return closed
    except Exception as e:
        print(f"关闭应用程序失败: {str(e)}")
        return False

if __name__ == "__main__":
    # 示例：打开记事本
    notepad_path = "C:\Program Files\Tencent\Weixin\Weixin.exe"  # 系统程序可直接使用文件名
    open_application(notepad_path)
    open_application(notepad_path)
    
    # 等待5秒
    time.sleep(5)
    
    # 示例：关闭记事本
    close_application("Weixin.exe")
    
    # 示例：打开自定义应用程序（请替换为实际路径）
    # custom_app_path = r"C:\Program Files\SomeApplication\app.exe"
    # open_application(custom_app_path)
    # time.sleep(10)
    # close_application("app.exe")
    